/**
******************************************************************************
  * @file    System/Src/delay.h
  * @author  hondent
  * @version V1.0.0
  * @date    2025-07-25
  ******************************************************************************
  * @attention 延时
  *
  *
  ******************************************************************************
  */
#include "delay.h"
#include "stm32f4xx.h"

/**
 * 延时毫秒
 * @param i 毫秒数
 */
void delayMilliseconds(uint32_t i) {
  while (i--) {
    SysTick->CTRL = 0;                          // 关闭系统定时器
    SysTick->LOAD = SystemCoreClock / 1000 - 1; // 定义系统定时间定时个数
    SysTick->VAL  = 0;                          // 清理当前统计数标志
    SysTick->CTRL = 5;                          // 启用系统定时器 168Mhz
    while ((SysTick->CTRL & 0x00010000) == 0);  // 等待定时标识位重置
    SysTick->CTRL = 0;                          // 关闭系统定时器
  }
}

/**
 * 延迟空执行
 * i=1	7~14 μs	100次× (5~10周期) ÷72MHz
 * @param i 数量
 */
void delayNop(uint32_t i) {
  uint32_t j;
  do {
    for (j=0;j<100;j++){;}
  }while (i--);
}
